// 传入的字符串类似于：`class="hh yy jj" id="ss"`
// 返回一个数组
// [{name: '', value: ''}]
export default function (str) {
  if (str == undefined) {
    return []
  }

  // 方便后续算法切割
  str += ' '
  // 当前是否在引号内
  let isInQuote = false
  // 切割起始点
  let point = 0

  let ret = []

  for (let i = 0, len = str.length; i < len; ++i) {
    let ch = str[i]
    if (ch == '"') {
      isInQuote = !isInQuote
    } else if (ch == ' ' && !isInQuote) {
      // if (!/^\s*$/.test(str.substring(point, i))) {
      //   // 一开始传入的str前面的不是空格，trim 不掉，所以使用了正则
      //   ret.push(str.substring(point, i).trim())
      //   point = i 
      // }

      // 我做个更改，在传入之前trim。竟然可以……
      ret.push(str.substring(point, i).trim())
      point = i
    }
  }

  // 将'k=v'形式拆开变成{name:k,value:v}
  return ret.map(it => {
    const o = it.match(/^(.+)="(.+)"$/)
    return {
      name: o[1],
      value: o[2]
    }
  })
}
